/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Felipe Duarte
 */
@Entity
@Table(name = "barrio")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Barrio.findAll", query = "SELECT b FROM Barrio b"),
    @NamedQuery(name = "Barrio.findByIdBarrio", query = "SELECT b FROM Barrio b WHERE b.idBarrio = :idBarrio"),
    @NamedQuery(name = "Barrio.findByNombreBarrio", query = "SELECT b FROM Barrio b WHERE b.nombreBarrio = :nombreBarrio"),
    @NamedQuery(name = "Barrio.findByLocalidadBarrio", query = "SELECT b FROM Barrio b WHERE b.localidadBarrio = :localidadBarrio"),
    @NamedQuery(name = "Barrio.findByLongitudBarrio", query = "SELECT b FROM Barrio b WHERE b.longitudBarrio = :longitudBarrio"),
    @NamedQuery(name = "Barrio.findByLatitudBarrio", query = "SELECT b FROM Barrio b WHERE b.latitudBarrio = :latitudBarrio"),
    @NamedQuery(name = "Barrio.findByEstado", query = "SELECT b FROM Barrio b WHERE b.estado = :estado")})
public class Barrio implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "ID_BARRIO")
    private Integer idBarrio;
    @Size(max = 45)
    @Column(name = "NOMBRE_BARRIO")
    private String nombreBarrio;
    @Size(max = 30)
    @Column(name = "LOCALIDAD_BARRIO")
    private String localidadBarrio;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "LONGITUD_BARRIO")
    private Float longitudBarrio;
    @Column(name = "LATITUD_BARRIO")
    private Float latitudBarrio;
    @Column(name = "ESTADO")
    private Boolean estado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idBarrioBarrioConstruccion")
    private List<BarrioConstruccion> barrioConstruccionList;
    @OneToMany(mappedBy = "idBarrioPuntoEmergencia")
    private List<PuntoEmergencia> puntoEmergenciaList;
    @JoinColumn(name = "ID_CIUDAD_BARRIO", referencedColumnName = "ID_CIUDAD")
    @ManyToOne(optional = false)
    private Ciudad idCiudadBarrio;

    public Barrio() {
    }

    public Barrio(Integer idBarrio) {
        this.idBarrio = idBarrio;
    }

    public Integer getIdBarrio() {
        return idBarrio;
    }

    public void setIdBarrio(Integer idBarrio) {
        this.idBarrio = idBarrio;
    }

    public String getNombreBarrio() {
        return nombreBarrio;
    }

    public void setNombreBarrio(String nombreBarrio) {
        this.nombreBarrio = nombreBarrio;
    }

    public String getLocalidadBarrio() {
        return localidadBarrio;
    }

    public void setLocalidadBarrio(String localidadBarrio) {
        this.localidadBarrio = localidadBarrio;
    }

    public Float getLongitudBarrio() {
        return longitudBarrio;
    }

    public void setLongitudBarrio(Float longitudBarrio) {
        this.longitudBarrio = longitudBarrio;
    }

    public Float getLatitudBarrio() {
        return latitudBarrio;
    }

    public void setLatitudBarrio(Float latitudBarrio) {
        this.latitudBarrio = latitudBarrio;
    }

    public Boolean getEstado() {
        return estado;
    }

    public void setEstado(Boolean estado) {
        this.estado = estado;
    }

    @XmlTransient
    public List<BarrioConstruccion> getBarrioConstruccionList() {
        return barrioConstruccionList;
    }

    public void setBarrioConstruccionList(List<BarrioConstruccion> barrioConstruccionList) {
        this.barrioConstruccionList = barrioConstruccionList;
    }

    @XmlTransient
    public List<PuntoEmergencia> getPuntoEmergenciaList() {
        return puntoEmergenciaList;
    }

    public void setPuntoEmergenciaList(List<PuntoEmergencia> puntoEmergenciaList) {
        this.puntoEmergenciaList = puntoEmergenciaList;
    }

    public Ciudad getIdCiudadBarrio() {
        return idCiudadBarrio;
    }

    public void setIdCiudadBarrio(Ciudad idCiudadBarrio) {
        this.idCiudadBarrio = idCiudadBarrio;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idBarrio != null ? idBarrio.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Barrio)) {
            return false;
        }
        Barrio other = (Barrio) object;
        if ((this.idBarrio == null && other.idBarrio != null) || (this.idBarrio != null && !this.idBarrio.equals(other.idBarrio))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Barrio[ idBarrio=" + idBarrio + " ]";
    }
    
}
